package proyectoX.src.entidades;

import java.awt.Rectangle;

import javax.swing.ImageIcon;
import javax.swing.JLabel; 

import proyectoX.src.aplicacion.Nivel;

/**
 * Clase abstracta que representa a los objetos con puntos de vida que interactúan en
 * el juego. 
 *
 */
public abstract class entidad extends JLabel {
	//Atributos
	protected int puntosDeVida;	
	protected Nivel nivel;

	/**
	 * Crea una entidad con los datos pasados por parámetro.
	 * @param nivel Nivel actual.
	 * @param ref Imagen a usar.
	 * @param puntosVida Puntos de vida de la entidad.
	 */
	public entidad(Nivel nivel,ImageIcon ref,int puntosVida) {
		super(ref);
		puntosDeVida=puntosVida;
		this.nivel=nivel;
	}


	/**
	 * Al recibir un disparo debe calcular puntos de vida y situación de posible muerte.
	 * @param dano Daño recibido.
	 */
	public void recibirDisparo(int dano){		
		puntosDeVida-=dano;
		if(puntosDeVida<=0) 
			muerte();					
	}

	/**
	 * Devuelve la cantidad de puntos de vida de la entidad.
	 * @return Los puntos de vida.
	 */
	public int getPuntosDeVida() {
		return puntosDeVida;
	}
	
	/**
	 * Método que es invocado al morir.
	 */
	public abstract void muerte(); 

	/**
	 * Devuelve el área de colisión. 
	 * @return Área de colisión. 
	 */
	public abstract Rectangle getBounds();
}
